package main

import "fmt"

/*
	接口: interface
       在GO中,接口是一组方法签名

		当某个类型为这个接口中的所有方法提供了方法的实现，它被称为实现接口。

		GO语言中，接口和类型的实现关系，是非嵌入式。
*/

type USB interface {
	start()
	end()
}

type Click interface {
	click()
}

type Mouse struct {
	name string
}

func (m Mouse) click() {
	fmt.Println("mouse click")
}

func (m Mouse) start() {
	fmt.Println("mouse start...")
}

func (m Mouse) end() {
	fmt.Println("mouse end ....")
}

func main() {
	m := Mouse{
		name: "ylf",
	}
	test(m)

}

func test(usb USB) {
	usb.start()
	usb.end()
}
